package org.demo3;

import com.opencsv.CSVWriter;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.Arrays;
/**
 * CSV 文件操作工具类。
 */
public class CsvOutputUtil {

    /**
     * 将数据写入 CSV 文件。
     *
     * @param data        要写入的数据，每个 String[] 表示一行
     * @param outputPath  输出文件路径
     */
    public static void writeCsvFile2(List<String[]> data, String outputPath) {
        try (CSVWriter writer = new CSVWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputPath), "UTF-8")))) {
            // 写入所有行
            writer.writeAll(data);
        } catch (IOException e) {
            System.err.println("Error writing CSV file: " + e.getMessage());
        }
    }

    /**
     * 将单个字符串列表转换为 CSV 文件。
     *
     * @param data        要写入的数据，每个 List<String> 表示一行
     * @param outputPath  输出文件路径
     */
    public static void writeCsvFile(List<List<String>> data, String outputPath) {
        // 将 List<List<String>> 转换为 List<String[]>
        List<String[]> dataAsArrays = data.stream()
                .map(strings -> strings.toArray(new String[0]))
                .collect(Collectors.toList());  // 使用 Collectors.toList()

        writeCsvFile2(dataAsArrays, outputPath);
    }

    /**
     * 将单个字符串数组写入 CSV 文件。
     *
     * @param data        要写入的数据，每个 String[] 表示一行
     * @param outputPath  输出文件路径
     */
    public static void writeSingleRowToCsv(String[] data, String outputPath) {
        try (CSVWriter writer = new CSVWriter(new FileWriter(outputPath))) {
            // 写入单行
            writer.writeNext(data);
        } catch (IOException e) {
            System.err.println("Error writing single row to CSV file: " + e.getMessage());
        }
    }

    public static void main(String[] args) {
//        String[] data = {"Hello", "World"};
//        writeSingleRowToCsv(data, "F:\\java-project-test\\output.csv");


        // 假设你已经找到了一些 SQL 关键字并存储在 results 列表中
        List<List<String>> data = new ArrayList<>();

        // 添加表头
        List<String> header =  Arrays.asList("File Path", "Class Name", "SQL Keyword", "Line Number", "In Comment");

        data.add(0, header);

        writeCsvFile(data, "F:\\java-project-test\\output.csv");

    }
}